<?php
declare(strict_types=1);

namespace app\middleware;

use think\Request;
use think\Response;

// 引入公共辅助函数
require_once __DIR__ . '/../../config/helpers.php';

/**
 * 安全头中间件
 * 添加常见的HTTP安全头以提升安全性
 */
class Security
{
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    public function handle($request, \Closure $next)
    {
        $response = $next($request);
        
        // 设置安全头部（使用数组形式）
        $headers = [
            'X-XSS-Protection' => '1; mode=block',
            'X-Frame-Options' => 'SAMEORIGIN',
            'X-Content-Type-Options' => 'nosniff',
            'Referrer-Policy' => 'strict-origin-when-cross-origin',
            'Server' => '',
            'X-Powered-By' => ''
        ];
        
        // 强制HTTPS（仅在生产环境）
        $appEnv = getEnvVar('APP_ENV', 'local');
        if ($appEnv === 'production') {
            $headers['Strict-Transport-Security'] = 'max-age=31536000; includeSubDomains';
        }
        
        // 一次性设置所有头部
        return $response->header($headers);
    }
}